문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 스크립트 키디 (문단 편집) === [[C언어]]를 알고 있으면 보안 전문가인가? === 스크립트 키디들 중에는 우습게도 C언어를 알고 있다는 것으로 해커임을 자칭하는 경우가 종종 있는데 프로그래머에게 있어 '''프로그래밍 언어라는 것은 그냥 컴퓨터에게 할 일을 전달해줄 수 있는 방법일 뿐'''이며, 이는 해커들 입장에서도 마찬가지다. '''프로그래밍 언어 자체는 해킹과 아무런 상관도 없으며 전혀 특별할 게 없는 프로그래밍 언어다'''라는 것이다. C언어가 이런 프로그래밍과 해킹의 표준 언어처럼 여겨지는 이유는 그만큼 오래 되었고 많이 쓰였기 때문이다. C언어가 최초로 등장한 연도는 [[1972년]]으로, 이 문서를 보는 어지간한 사람들보다도 나이가 많다. 당시에는 [[Microsoft Windows]]는커녕 [[MS-DOS]]도 없었고 [[빌 게이츠]]는 아직 파릇파릇한 고등학생이던 ~~[[빌 게이츠#s-3|학교 중앙컴퓨터를 해킹하던]]~~ 시절이였다. 현대 소프트웨어의 역사를 관통하는 언어이기에 현재 이용되는 거의 모든 [[운영체제]]들은 C언어로 커널이 만들어졌고 이런 [[운영체제]]들과 상호작용 하기 위해 제공 되는 [[API]]들의 기본 언어도 C언어다. 그러면 당연히 저런 시스템들을 깊은 수준으로 갖고 노는데는 C언어만한 게 없다. 그래서 애용되는 것이다. 문제는 C언어가 알려주는 것은 덧셈 뺄셈 같은 사칙연산, 함수의 개념 따위의 아주 기본적인 프로그래밍 개념 뿐이라는 점이다. 제 아무리 온갖 서점을 뒤져보고 인터넷을 뒤져본들 어떤 C언어 서적에도 해킹하는 방법 따위는 적혀 있지 않다. 심지어는 이 지식으로 C언어 코드를 짜서 돌려보면 그냥 까만 [[명령 프롬프트]] 창에 [[Hello, world!|달랑 글씨 몇글자 띄우고]] 덧셈 뺄셈 계산기나 만들 수 있을 뿐이다. 매우 실망스럽지만 C언어 학습을 통해 알 수 있는 지식은 딱 그정도가 한계이며, 하다못해 창 하나 띄우는 것조차 할 수가 없다. 고생해서 배웠더니 이런 꼴이 나는 이유는 워낙에 오래 되어 이미 여러가지 OS에서 통용 되는 언어이므로 후세에 나온 각종 API와 표준을 언어 차원에서 모두 지원해주는 것이 불가능하기 때문이다. C언어를 활용하여 어떤 일을 하기 위해서는 온갖 표준으로 지원 되는 다른 API들을 익히고 이들이 어떻게 돌아가는지를 파악해야 비로소 프로그램 같은 무언가를 만들 수 있다. 해킹 같은 게 C언어로만 가능하냐면 그것도 아니다. [[Java]], [[C#]], [[Python]] 등의 여러가지 프로그래밍 언어가 있고 이들도 C언어가 할 수 있는 일을 할 수 있고 여러가지 툴도 만들어진다. 간단한 자동화 등에는 C언어보다 다른 스트립트 언어들이 편할때도 았다. 단지 Windows에 직접접근이 불가능할 뿐이다. 이 경우에는 [[JNI]] 같은 네이티브 코드를 실행할수 있게 해주는 기능을 사용해야 한다. 이렇게 보면 알겠지만 프로그래밍 언어는 그저 시작일 뿐이다. [[해킹]]이라는 것은 언어를 뭘 알고 있는지, GUI를 갖춘 프로그램을 만들 수 있는지 따위가 중요한게 아니라 프로그램이 컴퓨터 내에서 구체적으로 어떻게 돌아가는지, 실행의 흐름 속에서 어디에 논리적인 틈새가 있는지 찾을 수 있어야 하고 해킹 대상을 직접 분석할 수 있는 시스템에 대한 고차원적인 이해가 훨씬 더 중요하다.[* [[SQL injection]]이나 기타 웹해킹의 경우는 상대적으로 접근이 더 쉬운 편이다. 여러 서버에서 공통으로 쓰는 솔루션이 주 타겟인데다가 서버가 잘 관리 되지 않아서 업데이트가 안된 서버들이 많기 때문이다. 또한 웹페이지는 코드의 양 자체가 어플리케이션보다 훨씬 적고 읽기 쉬워서 분석도 수월하고 오류를 찾기도 쉽다. 그러나 그만큼 보완도 쉬워서 스스로의 능력이 없으면 마찬가지로 무력해지기 쉽고, 개인에게는 손을 쓰기 힘들다.] 현대 프로그래밍 언어는 고도로 추상화 되어 있어서 코드의 흐름이 실제 컴퓨터 내부에서 돌아가는 흐름과 큰 차이가 있기 때문에 이미 2000년대 초 이후로는 더 이상 프로그램을 만드는 것이 [[해킹]]을 손쉽게 할 수 있다는 의미를 가질 수 없게 되었다. 대체로 경력이 많은 프로그래머가 더 유리하긴 하지만 고수준에서 소프트웨어의 설계만을 하던 사람들이 이런 영역에 접근하려면 꽤 많은 노력이 필요하다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기